黑客学习记录 - 5 - sql、xss
字数
556 字
阅读时间
3 分钟
更新日期
2/8/2017
SQLMAP
https://github.com/sqlmapproject/sqlmap
- sqlmap.py -u “http”
- sqlmap.py -u “http” —dbs 查看数据库
- sqlmap.py -u “http” -D test —table //查看数据库中的表
- sqlmap.py -u “http” -D test -T users —dump
sqlmap要是能图形化就好了,打一堆命令不累吗
高级注入技巧
宽字节注入
PHP 5.3.0
之前默认开启魔术引号 相当于 addslashes()
but 数据库如果采用GBK
字符,会存在缺陷
- GBK编码范围
- 总体编码范围为 8140-FEFE
- 首字节在 81-FE 之间
- 尾字节在 40-FE 之间
输入 id=1%bf%27 or 1--+
就会产生漏洞
%bf%27
中%27是单引号,在经过服务器时,会在前面加上反斜线- 反斜线是%5c于是就变成
%bf%5c%27
- 5c在GBK是合法的尾字节
%bf%5c
= 汉字縗
- 单引号被执行,代码可以注入
cookie注入
程序使用 request
获取数据,过滤get
post
,却没有过滤 cookie
绕过WAF
if ($param = $_SERVER['QUERY_STRING']){
$op = fopen('1.txt','a+');
fwrite($op, $param."\r\n");
fclose($op);
}
将http参数内容写到文件,大量payload
Fuzz,得到的内容即是
XSS
编码绕过方式:需要 eval
函数
- String.fromCharCode() 把ASCII转换为字符串
- HEX转码
- js + 16进制转码
- unicode编码
大小写混合
超长字符串截断注入
mysql设置数据时会定义数据长度,当传入数据超出长度时,会自动截断。
例如可以注册一个用户 admin (后面N多空格)
最后截断用户名就是admin,当然过滤很简单,只用过滤空格即可
DATA URLS协议
html
<object data="data:text/html;base64,我们的完整语句"></object>
js
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
</object>
Flash xss
- getURL (“javascript:alert(document.domain)”,”_self”,”GET”);
XSS大概流程
- 寻找输入位置
- xss探针
'';!--"<XSS>=&{()}
- 根据输出位置(script标签内,style标签内,普通标签内,标签属性内)进行特殊符号的过滤情况
- 对所需要的特殊符号进行编码绕过
- 根据攻击场景需要构建payload
过狗一句话
- 文件包含
- 代码加密